package cn.tedu.charging.order.serializer;

import com.alibaba.fastjson2.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;

/**
 * 在需要的时候 将任何类型的Object数据序列化成byte数据
 * 将byte[] 反序列化成Object对象
 */
@Component
@Slf4j
public class MessageSerializer<T> {
    //序列化是T类型 转化成byte 任何object先变成json 在变成byte
    public byte[] serialize(T t){
        String json= JSON.toJSONString(t);
        return json.getBytes(StandardCharsets.UTF_8);
    }
    //反序列化 byte[]-->t
    public T deserialize(byte[] bytes,Class<T> clazz){
        //转回json
        String json=new String(bytes,StandardCharsets.UTF_8);
        //json工具库变成对象
        return JSON.parseObject(json,clazz);
    }
    //反序列化 json-->t
    public T deserialize(String json,Class<T> clazz){
        return JSON.parseObject(json,clazz);
    }
}